const projectName = process.argv[2]
const projectList = require('./projectList')
const setConfig = require('./setConfig')

// console.log('argv:', process.argv)

console.log(
  '\x1B[32m',
  '————————————————',
  ' 您正在运行的项目名是：',
  projectName,
  '————————————————',
)
// 设置配置
setConfig.run()

let fs = require('fs')
const shell = require('shelljs')
const proName = 'projectA'
// 记录正在运行的项目名
fs.writeFileSync('./config/project.js', `exports.name = '${projectName}'`)

// 删除不是当前项目的目录
async function delOtherProjects() {
  console.log('删除不是当前项目的目录')
  for (let i = 0; i < projectList.length; i++) {
    if (projectList[i] !== projectName) {
      // 先移动
      shell.cp('-R', `./src/projects/${projectList[i]}`, `../${projectList[i]}`)
      // 再删除
      shell.rm('-rf', `./src/projects/${projectList[i]}`)
    }
  }
}

async function compileDist() {
  // 启动一个新的进程，并执行命令
  let exec = require('child_process').execSync
  exec('npm run build', { stdio: 'inherit' })
  if (shell.exec(`npm run build`).code == 0) {
    console.log('打包成功')
  }
}

// 把删除的项目移动回来
async function regain() {
  console.log('删除其它目录')
  for (let i = 0; i < projectList.length; i++) {
    if (projectList[i] !== projectName) {
      // 先移动
      shell.cp('-R', `../${projectList[i]}`, `./src/projects/`)
      // 再删除
      shell.rm('-rf', `../${projectList[i]}`)
    }
  }
}

async function runTask() {
  // 删除不是当前项目的目录
  await delOtherProjects()
  // 打包完成
  await compileDist()
  // 删除其它目录
  await regain()
}
runTask()
